#pragma once

#include "viml/value.h"
#include <vector>
#include <string>

namespace viml {

// ========================================
// 环境变量操作
// ========================================

/**
 * sys_getenv(name) - 获取环境变量
 * @param name String - 变量名
 * @return String - 变量值，不存在返回Nil
 */
Value sys_getenv_builtin(const std::vector<Value>& args);

/**
 * sys_setenv(name, value) - 设置环境变量
 * @param name String - 变量名
 * @param value String - 变量值
 * @return Boolean - 成功标志
 */
Value sys_setenv_builtin(const std::vector<Value>& args);

/**
 * sys_environ() - 获取所有环境变量
 * @return Dict - 环境变量字典
 */
Value sys_environ_builtin(const std::vector<Value>& args);

// ========================================
// 进程执行
// ========================================

/**
 * sys_execute(cmd) - 执行系统命令
 * @param cmd String - 命令字符串
 * @return Number - 退出码
 */
Value sys_execute_builtin(const std::vector<Value>& args);

/**
 * sys_system(cmd) - 同步执行命令
 * @param cmd String - 命令字符串
 * @return Number - 退出码
 */
Value sys_system_builtin(const std::vector<Value>& args);

// ========================================
// 系统信息查询
// ========================================

/**
 * sys_platform() - 获取平台名称
 * @return String - "linux", "macos", "windows"
 */
Value sys_platform_builtin(const std::vector<Value>& args);

/**
 * sys_cwd() - 获取当前工作目录
 * @return String - 工作目录路径
 */
Value sys_cwd_builtin(const std::vector<Value>& args);

/**
 * sys_chdir(path) - 更改工作目录
 * @param path String - 目录路径
 * @return Boolean - 成功标志
 */
Value sys_chdir_builtin(const std::vector<Value>& args);

// ========================================
// 时间相关
// ========================================

/**
 * sys_time() - 获取当前时间戳
 * @return Number - Unix时间戳（秒）
 */
Value sys_time_builtin(const std::vector<Value>& args);

/**
 * sys_sleep(seconds) - 休眠指定时间
 * @param seconds Number - 秒数
 * @return Nil
 */
Value sys_sleep_builtin(const std::vector<Value>& args);

} // namespace viml
